package com.health.institution.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.health.institution.domain.MedicalHospital;

/**
 * 机构管理Mapper接口
 *
 * @author ruoyi
 * @date 2025-10-27
 */
@Mapper
public interface MedicalHospitalMapper
{
    /**
     * 查询机构管理
     *
     * @param hospitalId 机构管理主键
     * @return 机构管理
     */
    public MedicalHospital selectMedicalHospitalByHospitalId(Long hospitalId);

    /**
     * 查询机构管理列表
     *
     * @param medicalHospital 机构管理
     * @return 机构管理集合
     */
    public List<MedicalHospital> selectMedicalHospitalList(MedicalHospital medicalHospital);

    /**
     * 新增机构管理
     *
     * @param medicalHospital 机构管理
     * @return 结果
     */
    public int insertMedicalHospital(MedicalHospital medicalHospital);

    /**
     * 修改机构管理
     *
     * @param medicalHospital 机构管理
     * @return 结果
     */
    public int updateMedicalHospital(MedicalHospital medicalHospital);

    /**
     * 删除机构管理
     *
     * @param hospitalId 机构管理主键
     * @return 结果
     */
    public int deleteMedicalHospitalByHospitalId(Long hospitalId);

    /**
     * 批量删除机构管理
     *
     * @param hospitalIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMedicalHospitalByHospitalIds(Long[] hospitalIds);

    /**
     * 查询机构管理（包含科室信息）
     *
     * @param hospitalId 机构管理主键
     * @return 机构管理
     */
    public MedicalHospital selectMedicalHospitalWithDepartments(Long hospitalId);

    /**
     * 批量插入机构科室关联
     *
     * @param hospitalId 机构ID
     * @param departmentIds 科室ID列表
     * @return 结果
     */
    public int insertHospitalDepartments(@Param("hospitalId") Long hospitalId, @Param("departmentIds") List<Long> departmentIds);

    /**
     * 删除机构科室关联
     *
     * @param hospitalId 机构ID
     * @return 结果
     */
    public int deleteHospitalDepartments(Long hospitalId);

    /**
     * 根据机构ID查询关联的科室ID列表
     *
     * @param hospitalId 机构ID
     * @return 科室ID列表
     */
    public List<Long> selectDepartmentIdsByHospitalId(Long hospitalId);


}